/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package listas;

import listas.ListaClientes;
import listas.ListaMensajes;
import client.MailClient;
import java.io.Serializable;
import java.util.ArrayList;
import mensaje.Message;
/**
 * Esta clase define objetos que contienen listas de los mensajes y los usuario 
 * de correo.
 * @author HaNs
 * @version v1.1.1
 */
public class HandlerList implements Serializable{
    private ListaMensajes mensajes;
    private ListaClientes clientes;

/**
 *Constructor de la clase
 */    
    public HandlerList() {
        mensajes = new ListaMensajes();
        clientes = new ListaClientes();
    }//Cierre del constructor    

/**
 *Método que agrega/registra un mensaje del usuario de correo a la lista de mensajes.
 *@param mensaje Un objeto Message el cual sera agregado a la lista de mensajes.
 */
    public void agregarMensaje(Message mensaje){
        mensajes.agregarMensaje(mensaje);
    }//Cierre del método

/**
 * Método que agrega un cliente a la lista de clientes.
 * @param  cliente Un objeto Mailcliente el cual sera agregado a la lista de 
 * usuario de correo.
 */   
    public void agregarCliente(MailClient cliente){
        clientes.agregarCliente(cliente);
    }//Cierre del método
 
 /**
  * Método que obtiene la cantidad de mensajes.
  * @return int Un objeto entero que es el resultado de la cantidad de mensajes.
  */   
    public int cantidadMensajes(){
        return mensajes.cantidadAgregados();
    }//Cierre del método
 
/**
 * Método que obtiene la cantidad de clientes.
 * @return int Un objeto entero que es el resultado de la cantidad de clientes.
 */    
    public int cantidadClientes(){
        return clientes.cantidadAgregados();
    }//Cierre del método
 
/**
 * Método que obtiene los mensajes.
 * @param posicion El parametro posicion define el numero de lugar de un mensaje.
 * @return Message Un objeto Message con el resultado del mensaje de dicha 
 * posicion.
 */
    public Message obtenerMensajePosicion(int posicion){
        return mensajes.obtenerMensaje(posicion);
    }//Cierre del método

/**
 * Método que obtiene la posicion del cliente en la lista.
 * @param posicion El parametro posicion define el numero de lugar de un usuario
 * de correo.
 * @return MailCliente Un objeto MailCliente con el resultado del cliente de 
 * dicha posicion.
 */
    public MailClient obtenerClientePosicion(int posicion){
        return clientes.obtenerCliente(posicion);
    }//Cierre del método
 
/**
 * Método que elimina un mensaje
 * @param posicion El parametro posicion define el numero de lugar de un 
 * mensaje.
 */  
    public void eliminarMensajePosicion(int posicion){
        mensajes.eliminarMensajePosicion(posicion);
    }//Cierre del método

/**
 * Método que elimina un cliente
 * @param posicion El parametro posicion define el numero de lugar de un usuario
 * de correo.
 */   
    public void eliminarClientePosicion(int posicion){
        clientes.eliminarClientePosicion(posicion);
    }//Cierre del método

/**
 * Método que obtiene una lista de mensajes de un usuario
 * @param userName El parametro userName define el nombre del usuario de correo.
 * @return ArrayList<Message> Un objeto ArrayList que es el resultado de la 
 * lista de mensajes del usuario de correo.
 */    
    public ArrayList<Message> obtenerMensajes(String userName){
        return mensajes.obtenerMensajes(userName);
    }//Cierre del método
 
/**
 * Método que elimina un mensaje
 * @param mensajeEliminar El parametro mensajeEliminar define el mensaje del 
 * usuario de correo.
 */
    public void eliminarMensaje(Message mensajeEliminar){
        mensajes.eliminarMensaje(mensajeEliminar);
    }//Cierre del método
}//Cierre de la clase
